<?php
import(APP_PATH . '/model/Verify.php');
class admin extends spController
{
	function index() // 这里是首页
	{
		$this->tpl_title = "控制面板";
		$this->display("admin/admin_index.html");
	} 

	function verifyCode() // 验证码
	{
		session_start();
		header("Content-type: image/png");
		$image = spClass('Verify');
		$_SESSION['verify_code'] = $image->show();
	} 
	// 退出登录
	public function logout()
	{ 
		// 这里是PHP.net关于删除SESSION的方法
		$_SESSION = array();
		if (isset($_COOKIE[session_name()]))
		{
			setcookie(session_name(), '', time()-42000, '/');
		} 
		session_destroy();
		setcookie("username", null, time() - 86400 * 365);
		setcookie("password", null, time() - 86400 * 365); 
		// 跳转回首页
		$this->success("已退出，返回首页！", spUrl("main", "index"));
	} 
	// 显示用户登录框以及验证用户登录情况
	public function login()
	{
		$this->tpl_title = "用户登录";
		import("spAcl.php"); // 引入Acl文件，使得可以生成加密的密码输入框
		$userObj = spClass("lib_user"); // 实例化lib_user类
		if ($name = $this->spArgs("name")) // 已经提交，这里开始进行登录验证
		{
			$pass = $this->spArgs("password"); // 密码是否为空
			if ($pass == "")
			{
				$this->error("请输入密码！", spUrl("admin", "login"));
			} 
			$password = spClass('md5password')->pwvalue(); // 通过acl的pwvalue获取提交的加密密码
			$verifyCode = $this->spArgs("verifyCode"); 
			// if($verifyCode != $_SESSION['verify_code']){
			// $this->error("验证码错误！", spUrl("admin","login"));
			// }
			// 使用spVerifier进行第一次检查
			$rows = array('name' => $name, 'password' => password);
			$results = $userObj->spVerifier($rows);
			if (false == $results) // 当spVerifier返回false的时候，则是表示已经通过验证，数据是合格的
			{
				// 使用lib_user类中我们新建的userlogin方法来验证用户名和密码
				if (false == $userObj->userlogin($name, $password))
				{ 
					// 登录失败，提示后跳转回登录页面
					$this->error("用户名/密码错误，请重新输入！", spUrl("admin", "login"));
				} 
				else
				{ 
					// 成功登录，跳转。这里要进行判断一下：
					// 如果用户角色是administrator（管理员）则跳转到admin/index的管理中心
					// 如果用户角色是visitors（普通会员）则跳转回首页
					$useracl = spClass("spAcl")->get(); // 通过acl的get可以获取到当前用户的角色标识
					if ("administrator" == $useracl)
					{ 
						// 获取用户活动信息
						$logintime = spClass("lib_user");
						$uid = $_SESSION["userinfo"]["uid"];
						$conditions = array("uid" => $uid);
						$newrow = array('activated' => date("Y-m-d H:i:s"),
							);
						$logintime->update($conditions, $newrow); // 更新记录
						$this->success("登录成功，欢迎您，管理员！", spUrl("admin", "index"));
					} 
					else
					{
						$this->success("登录成功，欢迎您，尊敬的会员！", spUrl("admin", "index"));
					} 
				} 
			} 
			else
			{ 
				// $results不是false，所以没有通过验证，错误信息是$results
				foreach($results as $item) // 开始循环错误信息的规则，这里只有用户名
				{
					// 每一个规则，都有可能返回多个错误信息，所以这里我们也循环$item来获取多个信息
					foreach($item as $msg)
					{ 
						// 虽然我们使用了循环，但是这里我们只需要第一条出错信息就行。
						// 所以取到了第一条错误信息的时候，我们使用$this->error来提示并跳转
						$this->error($msg, spUrl("admin", "login"));
					} 
				} 
			} 
		} 
		$this->display("admin/admin_login.html");
	} 
	// 清除smarty缓存
	function clear()
	{
		$smarty = $this->getView();
		$smarty->clear_all_cache();
		$url = spUrl('admin', 'index');
		$this->success('操作成功！', $url);
	} 

	function aclcheck()
	{
		$controller = $this - spArgs('controller');
		$action = $this - spArgs('action');
	} 
} 
